package handler

import (
	"app-manager/model"
	"github.com/gin-gonic/gin"
)

func Add(c *gin.Context) {
	name := c.PostForm("name")
	ty := c.PostForm("ty")
	if name == "" {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "字段不可为空",
		})
		return
	}
	var typ model.Typ
	tx := model.DB.Begin()
	defer func() {
		if err := model.DB.Where("ty = ?", ty).Find(&typ).Error; err != nil {
			tx.Rollback()
			c.JSON(200, gin.H{
				"code": 500,
				"msg":  "查询失败",
			})
			return
		}
	}()

	c.JSON(200, gin.H{
		"code": 500,
		"msg":  "查询成功",
	})
	game := model.Game{
		Name: name,
		TyID: typ.ID,
	}
	if err := model.DB.Create(&game).Error; err != nil {
		tx.Rollback()
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "添加失败",
		})
		return
	}
	c.JSON(200, gin.H{
		"code": 200,
		"msg":  "添加成功",
	})
	return
}
func Detail(c *gin.Context) {
	name := c.Query("name")
	var game model.Game
	if err := model.DB.Where("name = ?", name).
		Joins("left join typs on games.ty_id = typs.id").
		Find(&game).Error; err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "查询失败",
		})
		return
	}
	c.JSON(200, gin.H{
		"code": 200,
		"msg":  "添加成功",
		"data": game,
	})
	return
}
func List(c *gin.Context) {
	var game []model.Game
	if err := model.DB.Find(&game).Error; err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "展示失败",
		})
		return
	}
	c.JSON(200, gin.H{
		"code": 200,
		"msg":  "展示成功",
		"data": game,
	})
	return
}
func Message(c *gin.Context) {
	picture := c.Query("picture")
	var game []model.Game
	if err := model.DB.Where("picture = ?", picture).Find(&game).Error; err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "展示失败",
		})
		return
	}
	c.JSON(200, gin.H{
		"code": 200,
		"msg":  "展示成功",
		"data": game,
	})
	return
}
func Download(c *gin.Context) {
	name := c.Query("name")
	var game model.Game
	if err := model.DB.Where("name = ?", name).Find(&game).Error; err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "获取失败",
		})
		return
	}
	if err := model.DB.Model(&game).Update("uploadcount + ?", 1).Error; err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "下载失败",
		})
		return
	}
	c.JSON(200, gin.H{
		"code": 200,
		"msg":  "下载成功",
	})
	return
}
